# demo05_hashlib_test.py
# - 编写用于计算  大文件 md5 值的脚本
# - 文件名通过位置参数获得  def get_md5(fname):
# - 返回文件 md5 值(16进制)
import hashlib
def get_md5(fname):
    m = hashlib.md5()  # 创建计算文件md5值的对象
    # 因为是大文件，所以要分批处理  m.update(字节串)
    frb = open(fname, mode="rb")
    while True:
        data = frb.read(4096)  # 每次读取4096字节的数据 -> 4k
        if len(data) == 0:  # 如果读到的数据为空，则表示文件读取完毕
            break  # 文件读取完毕, 退出循环
        m.update(data)# 如果数据不为空，分批[m.update(data)]计算md5值
    frb.close()
    return m.hexdigest()  # 返回文件 md5 值(16进制)
if __name__ == '__main__':
    print(get_md5("/etc/passwd"))
    # e7845e12e36d6800fbb6e2a7150ff2f6
    # md5sum /etc/passwd
    # e7845e12e36d6800fbb6e2a7150ff2f6